package com.leather.common.toolkits;

import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.google.common.base.Objects;
import com.leather.common.result.CodeMsg;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;

import java.util.Collection;
import java.util.Map;

public class CheckKit {

    private CheckKit() {
    }

    public static void check(boolean expression, CodeMsg msg) {
        if (!expression) {
            throw ExceptionKit.newBizExcp(msg);
        }
    }

    public static <T> T notNull(T val, CodeMsg msg) {
        check(val != null, msg);
        return val;
    }

    public static <T> T notEmpty(T val, CodeMsg msg) {
        if (val instanceof CharSequence) {
            check(StringUtils.isNotEmpty((CharSequence) val), msg);
        } else if (val instanceof Collection<?>) {
            check(CollectionUtils.isNotEmpty((Collection<?>) val), msg);
        } else if (val instanceof Map<?, ?>) {
            check(MapUtils.isNotEmpty((Map<?, ?>) val), msg);
        } else {
            check(false, msg); // 不支持
        }
        return val;
    }



    public static <T> T equal(T val, T target, CodeMsg msg) {
        check(Objects.equal(val, target), msg);
        return val;
    }

    public static <T> T notEqual(T val, T target, CodeMsg msg) {
        check(!Objects.equal(val, target), msg);
        return val;
    }


}
